<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>learnString</title>
</head>

<body>
    <script>
        var str = 'worlld888世界!@';
        var str1 = 'hello';

        // 字符索引，返回指定位置字符
        console.log(str[3]);
        // 返回指定位置的字符方法
        console.log(str.charAt(3));
        // 返回对应字符的ascii编码
        console.log(str.charCodeAt(1));
        // 返回ascii编码对应的字符
        console.log(String.fromCharCode(65));
        // 转义字符 \反斜杠  \t制表符 \n换行
        console.log('\thello\'wo\nrld');
        // 拼接字符串
        console.log(str + str1);
        console.log(str.concat(str1, 'Orange'));
        // 模板字符串
        console.log(`你好${str1},世界${str}`);


        // 截取字符串start~end 不包括end
        var substring1 = str.substring(1, 4);
        var slice1 = str.slice(1, 4);
        console.log(substring1);
        console.log(slice1);
        // 截取字符串start~length
        var substr1 = str.substr(1, 3);
        console.log(substr1);


        // 查找当前字符串在整个字符串中首次出现的位置 str~offset，offset从哪开始查找 (从前往后找) 没有返回-1
        var result = str.indexOf('888');
        console.log(result);
        console.log(str.indexOf('888', 3));
        // 查找当前字符串在整个字符串中最后一次出现的位置 str~offset，offset从哪开始查找 (从后往前找) 没有返回-1
        console.log(str.lastIndexOf('l'))
        // ES6新增：includes()方法，是否包含字符串 返回布尔值 参数str~offset
        console.log(str.includes('wor'));

        // 去掉字符串两端的空格
        var mystr = '  LuoJianming  ';
        mystr = mystr.trim();
        console.log(mystr);

        // 大小写转换方法
        console.log(mystr.toUpperCase());
        console.log(mystr.toLowerCase());


        // **match()方法匹配结果数组，匹配到就返回数组，没有就返回null
        console.log(mystr.match('i'));
        // search()方法查找匹配字符串第一次出现所在的位置，没有就返回-1
        console.log(mystr.search(/luo/i));
        // replace方法替换字符串
        console.log(mystr.replace('i', 'I'))


        // ***split方法，切割字符串，返回数组
        console.log(mystr.split(''));


        // ES6新增：startsWith(),endsWith(),是否以子字符串开头，结尾。参数str~offset，返回布尔值
        console.log(mystr.startsWith('Jian', 3));
        console.log(mystr.endsWith('ming'));
        // ES6新增：开头结尾补全字符串
        console.log(mystr.padStart(20, '罗建明'))
        console.log(mystr.padEnd(20, '罗建明'))
        // ES6新增：repeat()重复n次返回新字符串
        console.log(mystr.repeat(2));


        //全局函数
        // 字符串Base64编码
        // btoa不能转码中文
        var btoa1 = btoa(str1);
        console.log(btoa1);
        console.log(atob(btoa1));
        // ***encodeURIComponent()方法 可以將任何非ASCII码字符转为Base64编码
        var encodeStr = encodeURIComponent(str);
        console.log(encodeStr);
        console.log(decodeURIComponent(encodeStr));
        // String()
        var num = 20;
        console.log(String(num));

        // string方法 toString()
        console.log(num.toString(10));
        console.log(num.toString(2));
        console.log(num.toString(8));
        console.log(num.toString(16));
    </script>
</body>

</html>